package com.itheima;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.function.Consumer;

/**
 * ArrayList的用法
 *
 *
 * 1.构造函数
 * ---1.
 *
 *
 * 2.成员方法
 * ---1.add（object obj）
 * ---2.add(int index,object obj)
 * ---3.get(int index)
 * ---4.set(int index,object obj)
 * ---5.remove(int index)
 * ---6.size()
 * ---7.isEmpty()
 * ---8.clear()
 * ---9.contains(object obj)
 *----10.获取迭代器
 *
 *
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        //1.创建ArrayList对象
        //底层赋值一个空数组
        ArrayList<String> list = new ArrayList<String>();
        //2.往ArrayList中添加元素
        list.add("张三");//添加一个数据，添加到末尾
        list.add(0,"李四");//添加一个数据，添加到指定位置
        //获取数据
        String s = list.get(1);
        System.out.println(s);

        //修改数据
        list.set(0,"王五");
        //删除数据
        list.remove(1);

        list.add("赵六");
        list.add("钱七");
        list.add("孙八");
        list.add("李四");

        System.out.println(list);
        System.out.println("-----------------集合的遍历方式1-----------------------");
        //1.for循环的形式
        for (int i = 0; i < list.size(); i++) {
            String obg = list.get(i);
            System.out.println(obg);
        }
        System.out.println("-----------------集合的遍历方式2-----------------------");
        //2.增强for循环的形式
        for (String obg : list) {//取出list一个一个放入obg中
            System.out.println(obg);
        }
        System.out.println("-----------------集合的遍历方式3-----------------------");
        //3.迭代器的形式
        //先获取集合的迭代器对象
        Iterator<String> iterator = list.iterator();
        //hasNext()判断集合中是否有元素，如果有返回true，如果没有返回false
        //next()获取集合中的下一个元素
        //for要确定循环的次数，所以要使用while循环
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
        System.out.println("-----------------集合的遍历方式4-----------------------");
        //4.Lambda表达式的形式
        //forEach()方法用于遍历集合中的元素
        //Comsumer<T>接口,此处为匿名类，方法叫匿名内部类
        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        list.forEach(consumer);
        System.out.println("-----------------集合的遍历方式4.1-----------------------");
        //Lambda表达式,本质就是一个函数对象
        list.forEach(st-> System.out.println(st));
        System.out.println("-----------------集合的遍历方式4.2-----------------------");
        //方法引用
        list.forEach(System.out::println);




    }

}
